// @Creation:	30.04.2012
// @Version:	13.05.2012
// 
// @cpu:	x86,
// @author:	alexey kurshakov [alexey.kurshakov@gmail.com]
//
// @Contents:	serialport.go 
//	Интерфейс для работы с последовательным портом
//

package serialport

import (
	"errors"
	"io"
)

// Список стандартных ошибок при работе с последовательными портами
var (
	// нет ошибок, успех
	NoError error = nil
	// неизвестное устройство, нет такого
	UnknownDevice error = errors.New("device don't exist")
	// вышел таймаут при операциях ввода/вывода
	IOTimeOut error = errors.New("timeout was exceeded during I/O operations")
	// ошибка при обмене данным с портом ввода/вывода
	IOError error = errors.New("an error was occured during I/O operation")
	// операция завершилась сбоем
	Failed error = errors.New("general error was occured")
)

// Интерфейс для работы с последовательным портом
type SerialPort interface {
	io.ReadWriteCloser
	io.ReaderFrom
	io.WriterTo
	WaitForData(timeOutMs int) error // ждать появления данных в порту
}

// Интерфейс для работы с COM-портом
type RS232Port interface {
	SerialPort
	GetSettings() *COMPortSettings // см. описание serialRS232.go
}
